From 75f52ca26fee71f6f706dd01133b3c93af70aeb9 Mon Sep 17 00:00:00 2001 From: robertl Date: Sun, 17 Jan 2010 01:42:10 +0000 Subject: [PATCH] Track format use counts to we can assign development priorities better. --- gui/format.cpp | 12 ++++++++++-- gui/format.h | 26 +++++++++++++++++++++----- gui/mainwindow.cpp | 17 +++++++++++++---- gui/setup.iss | 2 +- gui/upgrade.cpp | 35 +++++++++++++++++++++++++++-------- gui/upgrade.h | 11 ++++++----- 6 files changed, 78 insertions(+), 25 deletions(-) diff --git a/gui/format.cpp b/gui/format.cpp index 155566699..6ce2e2e70 100644 --- a/gui/format.cpp +++ b/gui/format.cpp @@ -1,5 +1,5 @@ // -*- C++ -*- -// $Id: format.cpp,v 1.2 2009/11/02 20:38:02 robertl Exp $ +// $Id: format.cpp,v 1.3 2010/01/17 01:42:10 robertl Exp $ //------------------------------------------------------------------------ // // Copyright (C) 2009 S. Khai Mong . @@ -21,6 +21,7 @@ // //------------------------------------------------------------------------ #include "format.h" +#include "mainwindow.h" QString Format::htmlBase = QString(); @@ -50,12 +51,19 @@ void Format::saveSettings(QSettings &settings) { saveOptions(settings, name+".input", inputOptions); saveOptions(settings, name+".output", outputOptions); + // TODO: Finish this; let's not corrupt the .plsts until we can start from zero. + if (getReadUseCount() || getWriteUseCount()) { + settings.setValue(name + ".readcount", getReadUseCount()); + settings.setValue(name + ".writecount", getWriteUseCount()); + } } void Format::restoreSettings(QSettings &settings) { restoreOptions(settings, name+".input", inputOptions); restoreOptions(settings, name+".output", outputOptions); + bumpReadUseCount(settings.value(name + ".readcount").toInt()); + bumpWriteUseCount(settings.value(name + ".writecount").toInt()); } void Format::setToDefault() @@ -68,4 +76,4 @@ void Format::setToDefault() outputOptions[i].setSelected(false); outputOptions[i].setValue(QVariant()); } -} +} \ No newline at end of file diff --git a/gui/format.h b/gui/format.h index e3bb00e61..d2e18316f 100644 --- a/gui/format.h +++ b/gui/format.h @@ -1,5 +1,5 @@ // -*- C++ -*- -// $Id: format.h,v 1.2 2009/11/02 20:38:02 robertl Exp $ +// $Id: format.h,v 1.3 2010/01/17 01:42:10 robertl Exp $ //------------------------------------------------------------------------ // // Copyright (C) 2009 S. Khai Mong . @@ -109,7 +109,9 @@ class Format fileFormat(false), deviceFormat(false), extensions(QStringList()), - html(QString()) + html(QString()), + readUseCount_(0), + writeUseCount_(0) { inputOptions.clear(); outputOptions.clear(); @@ -131,7 +133,10 @@ class Format extensions(extensions), inputOptions(inputOptions), outputOptions(outputptions), - html(QString()) + html(QString()), + readUseCount_(0), + writeUseCount_(0) + { } @@ -143,7 +148,10 @@ class Format extensions(c.extensions), inputOptions(c.inputOptions), outputOptions(c.outputOptions), - html(c.html) + html(c.html), + readUseCount_(0), + writeUseCount_(0) + { } @@ -181,7 +189,13 @@ class Format void setToDefault(); static QString getHtmlBase() { return htmlBase; } static void setHtmlBase(const QString &s) { htmlBase = s; } - + + void bumpReadUseCount(int v) { readUseCount_ += v; } + void bumpWriteUseCount(int v) { writeUseCount_ += v; } + int getReadUseCount() const { return readUseCount_; } + int getWriteUseCount() const { return writeUseCount_; } + void zeroUseCounts(void); + private: QString name, description; bool readWaypoints, readTracks, readRoutes; @@ -192,6 +206,8 @@ class Format QListoutputOptions; QString html; static QString htmlBase; + int readUseCount_; + int writeUseCount_; }; diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 914ce3f36..23cd8de4d 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -1,5 +1,5 @@ // -*- C++ -*- -// $Id: mainwindow.cpp,v 1.12 2009/11/02 20:38:02 robertl Exp $ +// $Id: mainwindow.cpp,v 1.13 2010/01/17 01:42:10 robertl Exp $ //------------------------------------------------------------------------ // // Copyright (C) 2009 S. Khai Mong . @@ -169,7 +169,9 @@ MainWindow::MainWindow(QWidget* parent): QMainWindow(parent) //--- Restore from registry restoreSettings(); upgrade = new UpgradeCheck(); - upgrade->checkForUpgrade(babelVersion, bd.upgradeCheckMethod, bd.upgradeCheckTime, bd.installationUuid); + upgrade->checkForUpgrade(babelVersion, bd.upgradeCheckMethod, + bd.upgradeCheckTime, bd.installationUuid, + formatList); } //------------------------------------------------------------------------ @@ -781,13 +783,18 @@ void MainWindow::applyActionX() args << (formatList[fidx].getName() + MakeOptions(formatList[fidx].getInputOptions())); // Input file(s) or device + int read_use_count = 0; if (bd.inputType == BabelData::fileType) { - for (int i=0; i &formatList) { this->currentVersion = currentVersionIn; this->currentVersion.remove("GPSBabel Version "); this->upgradeCheckMethod = checkMethod; + this->formatList = &formatList; QDateTime soonestCheckTime = lastCheckTime.addDays(1); if (!testing && QDateTime::currentDateTime() < soonestCheckTime) { @@ -126,9 +129,11 @@ UpgradeCheck::updateStatus UpgradeCheck::checkForUpgrade(const QString ¤tV this, SLOT(readResponseHeader(const QHttpResponseHeader &))); QHttpRequestHeader header("POST", "/upgrade_check.html"); - header.setValue("Host", "www.gpsbabel.org"); + + const QString host("www.gpsbabel.org" ); + header.setValue("Host", host); + header.setContentType("application/x-www-form-urlencoded"); - header.setValue("Host", "www.gpsbabel.org"); QLocale locale; QString args = "current_version=" + currentVersion; @@ -145,7 +150,20 @@ UpgradeCheck::updateStatus UpgradeCheck::checkForUpgrade(const QString ¤tV args += "&beta_ok=1"; // Eventually to come from prefs. args += "&lang=" + QLocale::languageToString(locale.language()); - http->setHost("www.gpsbabel.org"); + int j = 0; + for (int i = 0; i < formatList.size(); i++) { + int rc = formatList[i].getReadUseCount(); + int wc = formatList[i].getWriteUseCount(); + QString formatName = formatList[i].getName(); + if (rc) + args += QString("&uc%1=rd/%2/%3").arg(j++).arg(formatName).arg(rc); + if (wc) + args += QString("&uc%1=wr/%2/%3").arg(j++).arg(formatName).arg(wc); + } + if (j) + args += QString("&uc=%1").arg(j); + + http->setHost(host, 80); httpRequestId = http->request(header, args.toUtf8()); return UpgradeCheck::updateUnknown; @@ -191,7 +209,7 @@ void UpgradeCheck::httpRequestFinished(int requestId, bool error) if (testing) currentVersion = "1.3.1"; // for testing - bool allowBeta = false; // TODO: come from prefs or current version... + bool allowBeta = true; // TODO: come from prefs or current version... QDomNodeList upgrades = document.elementsByTagName("update"); QUrl downloadUrl; @@ -207,9 +225,10 @@ void UpgradeCheck::httpRequestFinished(int requestId, bool error) } bool updateIsBeta = upgrade.attribute("type") == "beta"; bool updateIsMajor = upgrade.attribute("type") == "major"; - bool updateCandidate = updateIsMajor || (updateIsBeta && allowBeta); - upgradeText = upgrade.firstChildElement("overview").text(); + bool updateIsMinor = upgrade.attribute("type") == "minor"; + bool updateCandidate = updateIsMajor || updateIsMinor || (updateIsBeta && allowBeta); + upgradeText = upgrade.firstChildElement("overview").text(); // String compare, not a numeric one. Server will return "best first". if((updateVersion > currentVersion) && updateCandidate) { response = tr("A new version of GPSBabel is available.
" diff --git a/gui/upgrade.h b/gui/upgrade.h index cbb5fcd3c..78704b421 100644 --- a/gui/upgrade.h +++ b/gui/upgrade.h @@ -19,7 +19,7 @@ */ - +#include "format.h" #include #include #include @@ -42,7 +42,10 @@ public: UpgradeCheck::updateStatus checkForUpgrade(const QString &babelVersion, int upgradeCheckMethod, const QDateTime &lastCheckTime, - const QString &installationUuid); + const QString &installationUuid, + QList &formatList + + ); QDateTime getUpgradeWarningTime() { return upgradeWarningTime; } @@ -59,12 +62,10 @@ protected: QDateTime upgradeWarningTime; // invalid time if this object never issued. QString getOsName(void); QString getOsVersion(void); - + QList *formatList; private slots: void httpRequestFinished(int requestId, bool error); - -// void httpStateChanged(int state); void readResponseHeader(const QHttpResponseHeader &responseHeader); -- 2.30.2